home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 9 / FM Towns Free Software Collection 9.iso / taropyon / install / install.cci < prev    next >
Text File  |  1994-11-16  |  51KB  |  2,153 lines

  1. # 1 "install.c"
  2.  
  3. # 1 "install.c"
  4. # 4 "install.h"
  5. int disp_desktop();
  6.  
  7. int syl_clear();
  8. int syl_putf(char *form);
  9. char *add_path_fn(char *path, char *fn);
  10. int tif_load(char *fn);
  11. int tiflist_disp( char **list );
  12. int mveplay(char *fn, int loop);
  13. int exprun(char *fn, char *para);
  14. int inst_help( int evNo, char *evDat, char *fn);
  15. int install_end( char *soft_name, int err );
  16.  
  17. int install_exec( char *probuf );
  18.  
  19. int item_setApl( int drv, int icon, char *ttl, char *path, char *para, int att );
  20.  
  21. char *get_inst_taro_mnu();
  22. char *get_inst_gsplaydata_mnu();
  23. # 23 "install.c"
  24. int DrvInst = -1;
  25. int PltNoWhite = 5;
  26. int ColBoxNormal = 0;
  27. int ColBoxInfo = 0;
  28. int ColBoxCaution = 0;
  29. int ColBoxError = 0;
  30. int ColMesh = 0;
  31.  
  32. int init();
  33. int term();
  34. int install_main();
  35. int set_debug_menu(char *mnu);
  36. # 42 "install.c"
  37. int main(int argc, char **argv)
  38. {
  39. init();
  40. install_main();
  41. term();
  42.  
  43. return (0);
  44. }
  45.  
  46. int init()
  47. {
  48. char msg[80], tmp[128];
  49. char *mnu;
  50. char *msgMenu[(1)];
  51. char *img;
  52. int winBasCol;
  53.  
  54. APL_init((0x0303),1,1);
  55. LHA_sysInit((0));
  56.  
  57.  
  58. disp_desktop();
  59. SCN_wrtPage(1);
  60. tmp[0] = 0;
  61. tmp[1] = 255;
  62. tmp[2] = 255;
  63. tmp[3] = 255;
  64. SCN_palette(0,PltNoWhite,tmp);
  65.  
  66.  
  67. SCN_wrtPage(1);
  68. winBasCol = 0;
  69.  
  70. winBasCol = (_ScnCol_though);
  71. APL_openBaseWin(winBasCol);
  72.  
  73.  
  74. SCN_wrtPage(1);
  75. strcpy(msg,"  SYSTEM  ");
  76. msgMenu[0] = " INSTALL ";
  77. # 85 "install.c"
  78. APL_openTopBarMenu(Fnt16x16,msg,(_ScnColTbl[12]), (1),Fnt16x12,msgMenu,(_ScnCol_black));
  79.  
  80.  
  81. MNU_datAdd( SysMnu, 0, 'A', Fnt16x16, 0, "about_dlg" , 0, "このプログラムについて");
  82. MNU_datAdd( SysMnu, 0, 'F', Fnt16x16, 0, "dsp_freemem", 0, "フリーメモリ" );
  83.  
  84.  
  85. mnu = AplMnu[0];
  86. MNU_datAdd( mnu, 0, 'H', Rom16x16, 0, "inst_help", "message.doc", "説明" );
  87. MNU_datAdd( mnu, 0, 0 , Rom16x16, 0, "" , 0 , (0) );
  88. MNU_mnuAdd( mnu, 0, 'T', Fnt16x16, get_inst_taro_mnu() , "TaroPYON" );
  89. MNU_mnuAdd( mnu, 0, 'G', Fnt16x16, get_inst_gsplaydata_mnu() , "MUSIC data for GSPLAY");
  90. # 104 "install.c"
  91. APL_setExitEvt("EXIT",(9999),"exit_chk");
  92.  
  93.  
  94. AplDtaInit();
  95.  
  96.  
  97. ColBoxNormal = SCN_tile_newMixCol(ColBoxNormal ,(0x00),(_ScnCol_dark) ,(_ScnColTbl[ 7]));
  98. ColBoxInfo = SCN_tile_newMixCol(ColBoxInfo ,(0x00),(_ScnColTbl[12]) ,(_ScnColTbl[ 7]));
  99. ColBoxError = SCN_tile_newMixCol(ColBoxError ,(0x00),(_ScnColTbl[10]) ,(_ScnColTbl[ 7]));
  100. ColBoxCaution = SCN_tile_newMixCol(ColBoxCaution,(0x00),(_ScnColTbl[14]),(_ScnColTbl[ 7]));
  101. ColMesh = SCN_tile_newMixCol(ColMesh ,(0x00),(_ScnCol_though),(_ScnColTbl[ 7]));
  102.  
  103. return ((0));
  104. }
  105.  
  106. int term()
  107. {
  108. char tmp[256];
  109.  
  110. FS_chdrv(toupper(DirStart[0]) - 'A');
  111. sprintf(tmp,"%s.",DirStart);
  112. FS_chdir(tmp);
  113.  
  114. APL_term();
  115. }
  116.  
  117. int disp_desktop()
  118. {
  119.  
  120.  
  121. char tmp[256];
  122.  
  123. sprintf(tmp,"%s%s", DirStart, "install.tif" );
  124. return tif_load(tmp);
  125. return (0);
  126. # 173 "install.c"
  127. }
  128.  
  129. int install_main()
  130. {
  131. int ret;
  132.  
  133. SCN_wrtPage(1);
  134. syl_clear();
  135. for (;;)
  136. {
  137. PD_curOn();
  138. ret = EV_chk(EvTop,0);
  139. if ( ret == (9999) )
  140. break;
  141. }
  142. return (0);
  143. }
  144.  
  145. int exit_chk()
  146. {
  147. char *dlgTxm;
  148. int i, ret;
  149. static char *msgtbl[4] =
  150. {
  151. "",
  152. "インストーラを終了しますか?",
  153. "",
  154. (0)
  155. };
  156.  
  157. dlgTxm = DlgTxm_open(ColBoxCaution);
  158. for ( i = 0; msgtbl[i] != (0); ++i )
  159. DlgTxm_putf( dlgTxm, Fnt16x16, (1), msgtbl[i]);
  160.  
  161. DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, (_ScnCol_black), (_ScnColTbl[ 7]), (_ScnColTbl[15]), (_ScnCol_dark),
  162. '\r' , 0x7300 , (9999), "", 0, "終了 : [実行]");
  163. DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, (_ScnCol_black), (_ScnColTbl[ 7]), (_ScnColTbl[15]), (_ScnCol_dark),
  164. '\x1B', 0x7200, 0, "", 0, "取消 : [取消]");
  165. DlgTxm_setSize(dlgTxm,480,64);
  166. DlgTxm_setPosition(dlgTxm,(1));
  167. ret = DlgTxm_start(dlgTxm);
  168. DlgTxm_close(dlgTxm);
  169. if ( ret != (9999) )
  170. ret = 0;
  171.  
  172. return (ret);
  173. }
  174.  
  175. int about_dlg()
  176. {
  177. char *dlgTxm;
  178.  
  179. dlgTxm = DlgTxm_open(ColBoxNormal);
  180. DlgTxm_setTitle(dlgTxm,Fnt16x16, "Installer ver.%s edition #%s",
  181. "1.01a", "02" );
  182.  
  183. DlgTxm_putf( dlgTxm, Fnt16x16, (1),"TaroPYON SoftWare Collection インストールプログラム");
  184. DlgTxm_putf( dlgTxm, Fnt16x08, (1), "");
  185. DlgTxm_putf( dlgTxm, Fnt16x12, (1),"for FreeSoftWare colletion 9");
  186. DlgTxm_putf( dlgTxm, Fnt16x12, (1), "");
  187. DlgTxm_putf( dlgTxm, Fnt16x16, (1), "%c%c TaroPYON",
  188. Gaiji_copyright>>8, Gaiji_copyright&0xFF );
  189.  
  190. DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, (_ScnCol_black),
  191. (_ScnColTbl[ 7]), (_ScnCol_hilight), (_ScnCol_dark), '\r', 0x7300, 0, "", 0, "OK : [実行]");
  192. DlgTxm_setSize(dlgTxm,320,48);
  193. DlgTxm_setPosition(dlgTxm,(1));
  194.  
  195. DlgTxm_start(dlgTxm);
  196. DlgTxm_close(dlgTxm);
  197.  
  198. return (0);
  199. }
  200.  
  201. int dsp_freemem()
  202. {
  203. unsigned int siz;
  204. char *dlgTxm;
  205. char tmp1[32], tmp2[32];
  206.  
  207. siz = APL_getFreeMem();
  208. dlgTxm = DlgTxm_open(ColBoxInfo);
  209. DlgTxm_setTitle(dlgTxm,Fnt16x16, "FREE MEMORY SIZE");
  210.  
  211. DlgTxm_putf( dlgTxm, Fnt16x12, (1),
  212. "free memory %s (%s) bytes",
  213. fdl_ltoaDig(siz,tmp1), fdl_ltoaMsg(siz,tmp2) );
  214.  
  215. DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, (_ScnCol_black),
  216. (_ScnColTbl[ 7]), (_ScnCol_hilight), (_ScnCol_dark), '\r', 0x7300, 0, "", 0, "OK : [実行]");
  217. DlgTxm_setSize(dlgTxm,400,64);
  218. DlgTxm_setPosition(dlgTxm,(0),2,22);
  219.  
  220. DlgTxm_start(dlgTxm);
  221. DlgTxm_close(dlgTxm);
  222. }
  223. # 14 "insttaro.c"
  224. char *_tarosc_aplname[(7)] =
  225. {
  226. "HEwin" ,
  227. "EDIA" ,
  228. "GSPLAY" ,
  229. "HE386" ,
  230. "CCI" ,
  231. "DOS tools",
  232. "TownsOS tools"
  233. };
  234.  
  235. char _tarosc_skey[(7)] =
  236. { 'H',
  237. 'E',
  238. 'G',
  239. 'M',
  240. 'C',
  241. 'D',
  242. 'T'
  243. };
  244.  
  245. char _tarosc_instdir[(7)][128];
  246. char _tarosc_defdir[128];
  247. int _tarosc_fcopy_att;
  248.  
  249. int _hewin_swapDrv, _hewin_init;
  250. int _edia_swapDrv;
  251. int _gsplay_midi;
  252. int _gsplay_rsmidi;
  253. int _gsplay_internal;
  254.  
  255. int _tarosc_setinstdir(char *instdir);
  256. int _tarosc_setapldir();
  257. int _tarosc_set_fcopymode();
  258. int _tarosc_check_config(int item_setup);
  259. int _hewin_config(char *instdir, int item_setup);
  260. int _hewin_install(char *instdir,int item_setup);
  261. int _hewin_setup(char *instdir,int item_setup);
  262. int _edia_config(char *instdir, int item_setup);
  263. int _edia_install(char *instdir,int item_setup);
  264. int _edia_setup(char *instdir,int item_setup);
  265. int _hewin_edia_setup(char *fn_mac, char *instdir,int item_setup);
  266. int _chk_pathlist( char *pathlist, char *path );
  267. int _gsplay_config(char *instdir, int item_setup);
  268. int _gsplay_install(char *instdir,int item_setup);
  269. int _gsplay_setup(char *instdir,int item_setup);
  270. int _he386_install(char *instdir,int item_setup);
  271. int _cci_install(char *instdir,int item_setup);
  272. int _dostool_install(char *instdir,int item_setup);
  273. int _tostool_install(char *instdir,int item_setup);
  274.  
  275. char *get_inst_taro_mnu()
  276. {
  277. char *mnu;
  278.  
  279. if ( (mnu = MNU_open()) == (0) )
  280. return ((0));
  281. MNU_datAdd( mnu, 0, 'H', Rom16x16, 0, "tarosc_install" , 0, "TaroPYON SoftWare Collection");
  282. MNU_datAdd( mnu, 0, 'S', Rom16x16, 0, "tarosdk_install", 0, "サイドワークプログラム集" );
  283. MNU_datAdd( mnu, 0, 0 , Rom16x16, 0, "" , 0, (0) );
  284. MNU_datAdd( mnu, 0, '1', Rom16x16, 0, "splib_install" , 0, "ライブラリ&ソ\ース 1 (SPLIB)" );
  285. MNU_datAdd( mnu, 0, '2', Rom16x16, 0, "silib_install" , 0, "ライブラリ&ソ\ース 2 (SILIB)" );
  286. MNU_datAdd( mnu, 0, '3', Rom16x16, 0, "dtalib_install" , 0, "ライブラリ&ソ\ース 3 (DTALIB)" );
  287. # 80 "insttaro.c"
  288. MNU_setPosition(mnu,-1);
  289.  
  290. return (mnu);
  291. }
  292.  
  293. int tarosc_install()
  294. {
  295. int ret, i, att, len, drv, argc, item_setup;
  296. char *fp;
  297. char **argv, *p, *typename;
  298. char *instdir;
  299. char *softname;
  300. char srcdir[128], instfile[128];
  301. char helpfn[128];
  302. char item_ttl[80],item_prog[16], item_para[128];
  303. int item_att;
  304. char *dlgTxm;
  305. char tmp[256], tmp2[256];
  306.  
  307. instdir = _tarosc_defdir; instdir[0] = '\0';
  308. softname = "TaroPYON SoftWare collection";
  309. _tarosc_fcopy_att = (0x00000001) | (0x00000010) | (0x00000100) | (0x01000000);
  310.  
  311. _TOP:
  312. syl_putf(softname);
  313. dlgTxm = DlgTxm_open(ColBoxNormal);
  314. DlgTxm_setTitle(dlgTxm,Fnt16x16,softname);
  315. DlgTxm_putf( dlgTxm, Fnt16x16, (1),
  316. "%s をインストールします。", softname );
  317. DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, (_ScnCol_black), (_ScnColTbl[ 7]), (_ScnCol_hilight), (_ScnCol_dark), '\r' , 0x7300 ,
  318. 1, "", 0, "インストール : [実行]");
  319. DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, (_ScnCol_black), (_ScnColTbl[ 7]), (_ScnCol_hilight), (_ScnCol_dark), 'H' , 0x2300 ,
  320. 2, "inst_help", "/TAROPYON/tarocol.doc", "説明 : [H]");
  321. DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, (_ScnCol_black), (_ScnColTbl[ 7]), (_ScnCol_hilight), (_ScnCol_dark), '\x1B', 0x7200,
  322. 3, "", 0, "取消 : [取消]");
  323. DlgTxm_setSize(dlgTxm,320,40);
  324. DlgTxm_setPosition(dlgTxm,(1));
  325. do
  326. {
  327. ret = DlgTxm_start(dlgTxm);
  328. } while ( ret == 2 );
  329. DlgTxm_close(dlgTxm);
  330. if ( ret != 1 )
  331. goto _RET;
  332.  
  333.  
  334. _SETDIR:
  335. if ( _tarosc_setinstdir(instdir) )
  336. goto _TOP;
  337. if ( _tarosc_setapldir() < 0 )
  338. goto _TOP;
  339.  
  340. dlgTxm = DlgTxm_open(ColBoxNormal);
  341. DlgTxm_setTitle(dlgTxm,Fnt16x16,softname);
  342. DlgTxm_putf( dlgTxm, Fnt16x16, (1),
  343. "以下のディレクトリにインストールします。" );
  344. DlgTxm_putf( dlgTxm, Fnt16x12, (1),"");
  345. ret = 0;
  346. for ( i = 0; i < (7); ++i )
  347. {
  348. if ( _tarosc_instdir[i][0] )
  349. {
  350. ret = 1;
  351. DlgTxm_putf( dlgTxm, Fnt16x12, (0),
  352. "  %-14s [%s]", _tarosc_aplname[i], _tarosc_instdir[i] );
  353. }
  354. }
  355. DlgTxm_putf( dlgTxm, Fnt16x12, (1),"");
  356. DlgTxm_putf( dlgTxm, Fnt16x16, (1),
  357. "インストール1 … ファイルを複写してTownsMENU にアイテム登録");
  358. DlgTxm_putf( dlgTxm, Fnt16x16, (1),
  359. "インストール2 … ファイルを複写(アイテム登録はしない)    ");
  360.  
  361. DlgTxm_setBtn( dlgTxm, Fnt16x16, 144, 20, (_ScnCol_black), (_ScnColTbl[ 7]), (_ScnCol_hilight), (_ScnCol_dark), '\r' , 0x7300 , 1, "", 0, "インストール1 : [実行]");
  362. DlgTxm_setBtn( dlgTxm, Fnt16x16, 144, 20, (_ScnCol_black), (_ScnColTbl[ 7]), (_ScnCol_hilight), (_ScnCol_dark), 'C' , 0x2C00 , 2, "", 0, "インストール2 : [C]");
  363. DlgTxm_setBtn( dlgTxm, Fnt16x16, 144, 20, (_ScnCol_black), (_ScnColTbl[ 7]), (_ScnCol_hilight), (_ScnCol_dark), '\x1B', 0x7200, 3, "", 0, "取消 : [取消]");
  364. DlgTxm_setSize(dlgTxm,320,40);
  365. DlgTxm_setPosition(dlgTxm,(1));
  366. ret = DlgTxm_start(dlgTxm);
  367. DlgTxm_close(dlgTxm);
  368. if ( ret != 1 && ret != 2 )
  369. goto _TOP;
  370. item_setup = (ret == 1 ? 1 : 0);
  371.  
  372.  
  373. _tarosc_set_fcopymode();
  374. if ( _tarosc_instdir[(0) ][0] ) _hewin_config( _tarosc_instdir[(0) ], item_setup);
  375. if ( _tarosc_instdir[(1) ][0] ) _edia_config( _tarosc_instdir[(1) ], item_setup);
  376. if ( _tarosc_instdir[(2) ][0] ) _gsplay_config( _tarosc_instdir[(2) ], item_setup);
  377.  
  378.  
  379. ret = _tarosc_check_config(item_setup);
  380. if ( ret < 0 )
  381. goto _TOP;
  382. if ( ret == 0 )
  383. goto _SETDIR;
  384.  
  385.  
  386. if ( _tarosc_instdir[(0) ][0] ) _hewin_install( _tarosc_instdir[(0) ], item_setup);
  387. if ( _tarosc_instdir[(1) ][0] ) _edia_install( _tarosc_instdir[(1) ], item_setup);
  388. if ( _tarosc_instdir[(2) ][0] ) _gsplay_install( _tarosc_instdir[(2) ], item_setup);
  389. if ( _tarosc_instdir[(3) ][0] ) _he386_install( _tarosc_instdir[(3) ], item_setup);
  390. if ( _tarosc_instdir[(4) ][0] ) _cci_install( _tarosc_instdir[(4) ], item_setup);
  391. if ( _tarosc_instdir[(5)][0] ) _dostool_install(_tarosc_instdir[(5)], item_setup);
  392. if ( _tarosc_instdir[(6)][0] ) _tostool_install(_tarosc_instdir[(6)], item_setup);
  393. install_end( softname, 0 );
  394.  
  395. _RET:
  396. syl_clear();
  397.  
  398. return ((0));
  399. }
  400.  
  401. int _tarosc_setinstdir(char *instdir)
  402. {
  403. char tmp[256];
  404.  
  405. if ( APL_setInstallDir(instdir,"インストール先指定") )
  406. return ((-1));
  407.  
  408. strcpy(tmp,instdir);
  409. add_path_fn(tmp,"");
  410.  
  411. sprintf( _tarosc_instdir[(0) ], "%s%s", tmp, "HEWIN" );
  412. sprintf( _tarosc_instdir[(1) ], "%s%s", tmp, "EDIA" );
  413. sprintf( _tarosc_instdir[(2) ], "%s%s", tmp, "GSPLAY" );
  414. sprintf( _tarosc_instdir[(3) ], "%s%s", tmp, "HE386" );
  415. sprintf( _tarosc_instdir[(4) ], "%s%s", tmp, "CCI" );
  416. sprintf( _tarosc_instdir[(5) ], "%s%s", tmp, "DOSTOOL");
  417. sprintf( _tarosc_instdir[(6) ], "%s%s", tmp, "TOSTOOL");
  418.  
  419. return ((0));
  420. }
  421.  
  422. int _tarosc_setapldir()
  423. {
  424. char *mnu, *mnuapl[(7)];
  425. char *dir;
  426. int i, flag, ret;
  427.  
  428.  
  429. for ( i = 0; i < (7); ++i )
  430. {
  431. if ( (mnuapl[i] = MNU_open()) != (0) )
  432. {
  433. MNU_datAdd( mnuapl[i], 0, '1', Rom16x16, i, "_setdir_tarosc" , (0), "Set directory");
  434. MNU_datAdd( mnuapl[i], 0, '0', Rom16x16, i, "_noinstall_tarosc", (0), "No install" );
  435. MNU_setPosition(mnuapl[i],-1);
  436. }
  437. }
  438.  
  439. do
  440. {
  441. if ( (mnu = MNU_open()) == (0) )
  442. return ((-1));
  443.  
  444. for ( i = 0; i < (7); ++i )
  445. {
  446. dir = _tarosc_instdir[i];
  447. if ( *dir == '\0' )
  448. dir = "No install";
  449. MNU_mnuAdd( mnu, 0, _tarosc_skey[i], Fnt16x16, mnuapl[i],
  450. "%-14s [%s]", _tarosc_aplname[i], dir);
  451. }
  452. MNU_datAdd( mnu, 0, 0 , (0) , 0, "", 0, (0) );
  453. MNU_datAdd( mnu, 0, 'S', Rom16x16, 1, "", 0, " <<< 設定終了 >>>");
  454. MNU_setPosition(mnu,(1));
  455. ret = MNU_start(mnu);
  456. MNU_close(mnu);
  457. MNU_datClear(mnu);
  458. } while ( ret == 0 );
  459.  
  460. flag = 0;
  461. for ( i = 0; i < (7); ++i )
  462. {
  463. if ( _tarosc_instdir[i][0] )
  464. flag = 1;
  465. MNU_datClear( mnuapl[i] );
  466. }
  467. if ( flag == 0 )
  468. ret = -1;
  469.  
  470. return (ret);
  471. }
  472.  
  473. int _setdir_tarosc(int evNo, char *evdat)
  474. {
  475. char *aplname;
  476. char *instdir;
  477.  
  478. instdir = _tarosc_instdir[evNo];
  479. if ( *instdir == '\0' )
  480. strcpy(instdir,_tarosc_defdir);
  481. APL_setInstallDir(instdir,"%s インストール先指定", _tarosc_aplname[evNo]);
  482. return (0);
  483. }
  484.  
  485. int _noinstall_tarosc(int evNo, char *evdat)
  486. {
  487. _tarosc_instdir[evNo][0] = '\0';
  488. return (0);
  489. }
  490. # 287 "insttaro.c"
  491. int _tarosc_set_fcopymode()
  492. {
  493. int ret;
  494. char *dlgTxm;
  495.  
  496. dlgTxm = DlgTxm_open(ColBoxNormal);
  497. DlgTxm_setTitle(dlgTxm,Fnt16x16,"ファイル複写動作の設定");
  498. DlgTxm_putf( dlgTxm, Fnt16x16, (1),
  499. "インストール時のファイル複写動作を指定してください。");
  500. DlgTxm_putf( dlgTxm, Fnt16x12, (1), "");
  501. DlgTxm_putf( dlgTxm, Fnt16x16, (1),
  502. "ノーマル … 通常の複写                                    ");
  503. DlgTxm_putf( dlgTxm, Fnt16x16, (1),
  504. "日付比較 … タイムスタンプを比較して新しいファイルのみ複写");
  505.  
  506. DlgTxm_setBtn( dlgTxm, Fnt16x16, 160, 20, (_ScnCol_black), (_ScnColTbl[ 7]), (_ScnCol_hilight), (_ScnCol_dark), '\r' , 0x7300 ,
  507. 0, "", 0, "ノーマル : [実行]");
  508. DlgTxm_setBtn( dlgTxm, Fnt16x16, 160, 20, (_ScnCol_black), (_ScnColTbl[ 7]), (_ScnCol_hilight), (_ScnCol_dark), 'T' , 0x1500 ,
  509. 1, "", 0, "日付比較 : [T]");
  510. DlgTxm_setSize(dlgTxm,480,40);
  511. DlgTxm_setPosition(dlgTxm,(1));
  512. do
  513. {
  514. ret = DlgTxm_start(dlgTxm);
  515. } while ( ret < 0 );
  516.  
  517. DlgTxm_close(dlgTxm);
  518.  
  519. _tarosc_fcopy_att = (0x00000001) | (0x00000010) | (0x00000100) | (0x01000000);
  520. if ( ret )
  521. _tarosc_fcopy_att |= (0x00000200);
  522.  
  523. return ((0));
  524. }
  525. # 327 "insttaro.c"
  526. int _tarosc_check_config(int item_setup)
  527. {
  528. int ret, i;
  529. char *dlgTxm;
  530. char tmp[256], *msg;
  531.  
  532. dlgTxm = DlgTxm_open(ColBoxNormal);
  533. DlgTxm_setTitle(dlgTxm,Fnt16x16,"設定の確認");
  534. DlgTxm_putf( dlgTxm, Fnt16x16, (0),
  535. "  実行ファイルのアイテム登録  … [%s]",
  536. item_setup ? "行う" : "行わない" );
  537. DlgTxm_putf( dlgTxm, Fnt16x16, (0),
  538. "  ファイル複写動作モード      … [%s]",
  539. (_tarosc_fcopy_att & (0x00000200)) ? "日付比較" : "ノーマル" );
  540.  
  541. if ( _tarosc_instdir[(0)][0] )
  542. {
  543. DlgTxm_putf( dlgTxm, Fnt16x16, (0),
  544. "  HEwin 初期設定              … [%s]",
  545. _hewin_init ? "する" : "しない");
  546.  
  547. if ( item_setup )
  548. {
  549. if ( _hewin_swapDrv < 0 )
  550. msg = "指定なし";
  551. else
  552. {
  553. msg = tmp;
  554. sprintf(msg,"%c:", _hewin_swapDrv);
  555. }
  556. DlgTxm_putf( dlgTxm, Fnt16x16, (0),
  557. "  HEwin 作業ドライブ          … [%s]", msg);
  558. }
  559. }
  560. if ( _tarosc_instdir[(1)][0] )
  561. {
  562. if ( item_setup )
  563. {
  564. if ( _edia_swapDrv < 0 )
  565. msg = "指定なし";
  566. else
  567. {
  568. msg = tmp;
  569. sprintf(msg,"%c:", _hewin_swapDrv);
  570. }
  571. DlgTxm_putf( dlgTxm, Fnt16x16, (0),
  572. "  EDIA 作業ドライブ           … [%s]", msg);
  573. }
  574. }
  575. if ( _tarosc_instdir[(2)][0] )
  576. {
  577. if ( item_setup && (_gsplay_midi >= 0 || _gsplay_rsmidi || _gsplay_internal >=0) )
  578. {
  579. if ( _gsplay_midi < 0 )
  580. {
  581. msg = "未使用";
  582. } else
  583. {
  584. msg = tmp;
  585. sprintf(msg,"port %c", _gsplay_midi + 'A' );
  586. }
  587. DlgTxm_putf( dlgTxm, Fnt16x16, (0),
  588. "  GSPLAY 演奏データ出力先     … [MIDI card (%s)]", msg);
  589.  
  590. if ( _gsplay_rsmidi >= 0 )
  591. DlgTxm_putf( dlgTxm, Fnt16x16, (0),
  592. "                              … [RS-232C MIDI]");
  593. if ( _gsplay_internal >= 0 )
  594. DlgTxm_putf( dlgTxm, Fnt16x16, (0),
  595. "                              … [内蔵音源]");
  596. }
  597. }
  598.  
  599. DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, (_ScnCol_black), (_ScnColTbl[ 7]), (_ScnCol_hilight), (_ScnCol_dark), '\r' , 0x7300 ,
  600. 1, "", 0, "インストール : [実行]");
  601. DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, (_ScnCol_black), (_ScnColTbl[ 7]), (_ScnCol_hilight), (_ScnCol_dark), 'R' , 0x1400 ,
  602. 2, "", 0, "再設定 : [R]");
  603. DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, (_ScnCol_black), (_ScnColTbl[ 7]), (_ScnCol_hilight), (_ScnCol_dark), '\x1B', 0x7200,
  604. 3, "", 0, "取消 : [取消]");
  605. DlgTxm_setSize(dlgTxm,480,40);
  606. DlgTxm_setPosition(dlgTxm,(1));
  607. ret = DlgTxm_start(dlgTxm);
  608. DlgTxm_close(dlgTxm);
  609.  
  610. switch ( ret )
  611. {
  612. case 1:
  613. return (1);
  614. case 2:
  615. return (0);
  616. default:
  617. return (-1);
  618. }
  619. }
  620. # 426 "insttaro.c"
  621. int _hewin_config(char *instdir, int item_setup)
  622. {
  623. int ret;
  624. char *dlgTxm;
  625. char *dlgGets;
  626. char buf[8];
  627.  
  628. _hewin_init = 0;
  629.  
  630. dlgTxm = DlgTxm_open(ColBoxNormal);
  631. DlgTxm_setTitle(dlgTxm,Fnt16x16,"HEwin 環境設定");
  632. DlgTxm_putf( dlgTxm, Fnt16x16, (1),
  633. "インストール時にHEwin の初期設定を行いますか?");
  634. DlgTxm_putf( dlgTxm, Fnt16x12, (1), "");
  635. DlgTxm_putf( dlgTxm, Fnt16x16, (1),
  636. "新規にHEwin をインストールするときは[初期設定]を指定してください。");
  637.  
  638. DlgTxm_putf( dlgTxm, Fnt16x12, (1),"");
  639. DlgTxm_putf( dlgTxm, Fnt16x16, (1),
  640. "※  初期設定を指定すると、既にインストールされている");
  641. DlgTxm_putf( dlgTxm, Fnt16x16, (1),
  642. "    HEwin の設定情報は失われます。                  ");
  643.  
  644. DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, (_ScnCol_black), (_ScnColTbl[ 7]), (_ScnCol_hilight), (_ScnCol_dark), 'I' , 0x1800 ,
  645. 1, "", 0, "初期設定 : [I]");
  646. DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, (_ScnCol_black), (_ScnColTbl[ 7]), (_ScnCol_hilight), (_ScnCol_dark), 'N' , 0x2F00 ,
  647. 0, "", 0, "なし : [N]");
  648.  
  649. DlgTxm_setSize(dlgTxm,320,40);
  650. DlgTxm_setPosition(dlgTxm,(1));
  651. do
  652. {
  653. ret = DlgTxm_start(dlgTxm);
  654. } while ( ret < 0 );
  655. DlgTxm_close(dlgTxm);
  656. _hewin_init = ret;
  657.  
  658. _hewin_swapDrv = -1;
  659. if ( item_setup )
  660. {
  661. if ( (dlgGets = DlgGets_open()) == (0) )
  662. return ((-1));
  663.  
  664. DlgGets_setTitle(dlgGets,Fnt16x16,"HEwin 環境設定");
  665. buf[0] = '\0';
  666. DlgGets_setSize(dlgGets,320,64);
  667. DlgGets_putf( dlgGets, Fnt16x16, 1, "作業ドライブを指定してください(例:「D」)。" );
  668. DlgGets_setPosition(dlgGets,(1));
  669. if ( DlgGets_start(dlgGets,3,buf) == (0) )
  670. {
  671. if ( isalpha(buf[0]) )
  672. _hewin_swapDrv = toupper(buf[0]);
  673. else
  674. _hewin_swapDrv = -1;
  675. }
  676. DlgGets_close(dlgGets);
  677. }
  678. return ((0));
  679. }
  680.  
  681. int _hewin_install(char *instdir,int item_setup)
  682. {
  683. int ret, att, len, drv;
  684. char *srcdir, *instfile;
  685. char *item_prog, *item_ttl, item_para[128];
  686. int item_att;
  687. char tmp[256], tmp2[256];
  688.  
  689. srcdir = "/TAROPYON/HEWIN";
  690. instfile = "*.exp *.cci *.c *.h *.rex *.dll *.exe *.doc *.hlp *.lst *.tbl";
  691. item_prog = "HEWIN.EXP";
  692. item_ttl = "HEwin";
  693. item_para[0] = '\0';
  694. item_att = 2;
  695.  
  696. syl_putf("HEWIN INSTALL");
  697. FS_chdrv( toupper(DirStart[0]) - 'A' );
  698. if ( *srcdir == '\0' || *srcdir == '.' )
  699. {
  700. strcpy(tmp,DirStart);
  701. ret = strlen(tmp);
  702. if ( ret > 3 && FS_isDelim(tmp[ret-1]) )
  703. tmp[ret-1] = '\0';
  704. } else
  705. {
  706. if ( FS_isDelim(*srcdir) )
  707. strcpy(tmp,srcdir);
  708. else
  709. sprintf(tmp,"%s%s",DirStart, srcdir);
  710. }
  711. FS_getFullPn(tmp2,tmp);
  712. srcdir = tmp2;
  713. att = _tarosc_fcopy_att;
  714. ret = FCOPY_exec(att, srcdir, instfile, instdir);
  715.  
  716. if ( _hewin_init )
  717. {
  718. instfile = "*.apl *.env *.ini *.itm *.tif";
  719. att = _tarosc_fcopy_att & (~(0x00000001));
  720. ret = FCOPY_exec(att, srcdir, instfile, instdir);
  721. }
  722.  
  723.  
  724. syl_putf("HEWIN CUSTOMIZE");
  725. _hewin_setup(instdir,item_setup);
  726.  
  727. if ( ret == (0) && item_setup != 0 )
  728. {
  729. syl_putf("HEWIN ITEM SETUP");
  730. if ( isalpha(_hewin_swapDrv) )
  731. sprintf(item_para,"-swapDrv %c", _hewin_swapDrv);
  732. drv = toupper(instdir[0]) - 'A';
  733. strcpy(tmp,instdir);
  734. add_path_fn(tmp,item_prog);
  735. item_setApl( drv, 1024, item_ttl, tmp, item_para, item_att );
  736. }
  737.  
  738. return (ret);
  739. }
  740.  
  741. int _hewin_setup(char *instdir,int item_setup)
  742. {
  743. return _hewin_edia_setup("hewin.mac", instdir, item_setup);
  744. }
  745. # 555 "insttaro.c"
  746. int _edia_config(char *instdir, int item_setup)
  747. {
  748. int ret;
  749. char *dlgGets;
  750. char buf[8];
  751.  
  752. _edia_swapDrv = -1;
  753. if ( item_setup )
  754. {
  755. if ( (dlgGets = DlgGets_open()) == (0) )
  756. return ((-1));
  757.  
  758. DlgGets_setTitle(dlgGets,Fnt16x16,"EDIA 環境設定");
  759. buf[0] = '\0';
  760. DlgGets_setSize(dlgGets,320,64);
  761. DlgGets_putf( dlgGets, Fnt16x16, 1, "作業ドライブを指定してください(例:「D」)。" );
  762. DlgGets_setPosition(dlgGets,(1));
  763. if ( DlgGets_start(dlgGets,3,buf) == (0) )
  764. {
  765. if ( isalpha(buf[0]) )
  766. _edia_swapDrv = toupper(buf[0]);
  767. else
  768. _edia_swapDrv = -1;
  769. }
  770. DlgGets_close(dlgGets);
  771. }
  772. return ((0));
  773. }
  774.  
  775. int _edia_install(char *instdir,int item_setup)
  776. {
  777. int ret, att, len, drv;
  778. char *srcdir, *instfile;
  779. char *item_prog, *item_ttl, item_para[128];
  780. int item_att;
  781. char tmp[256], tmp2[256];
  782.  
  783. srcdir = "/TAROPYON/EDIA";
  784. instfile = "*.exp *.cci *.c *.h *.rex *.dll *.doc";
  785. item_prog = "EDIA.EXP";
  786. item_ttl = "EDIA";
  787. item_para[0] = '\0';
  788. item_att = 2;
  789.  
  790. syl_putf("EDIA INSTALL START");
  791. FS_chdrv( toupper(DirStart[0]) - 'A' );
  792. if ( *srcdir == '\0' || *srcdir == '.' )
  793. {
  794. strcpy(tmp,DirStart);
  795. ret = strlen(tmp);
  796. if ( ret > 3 && FS_isDelim(tmp[ret-1]) )
  797. tmp[ret-1] = '\0';
  798. } else
  799. {
  800. if ( FS_isDelim(*srcdir) )
  801. strcpy(tmp,srcdir);
  802. else
  803. sprintf(tmp,"%s%s",DirStart, srcdir);
  804. }
  805. FS_getFullPn(tmp2,tmp);
  806. srcdir = tmp2;
  807. att = _tarosc_fcopy_att;
  808. ret = FCOPY_exec(att, srcdir, instfile, instdir);
  809.  
  810.  
  811. syl_putf("EDIA CUSTOMIZE");
  812. _edia_setup(instdir,item_setup);
  813.  
  814. if ( ret == (0) && item_setup != 0 )
  815. {
  816. syl_putf("EDIA ITEM SETUP");
  817. if ( isalpha(_edia_swapDrv) )
  818. sprintf(item_para,"-swapDrv %c", _edia_swapDrv);
  819. drv = toupper(instdir[0]) - 'A';
  820. strcpy(tmp,instdir);
  821. add_path_fn(tmp,item_prog);
  822. item_setApl( drv, 1024, item_ttl, tmp, item_para, item_att );
  823. }
  824.  
  825. return (ret);
  826. }
  827.  
  828. int _edia_setup(char *instdir,int item_setup)
  829. {
  830. return _hewin_edia_setup("edia.mac", instdir, item_setup);
  831. }
  832.  
  833. int _hewin_edia_setup(char *fn_mac, char *instdir,int item_setup)
  834. {
  835. char *p, *s, *dir, *pathInst, fnMac[256], path[1024];
  836. char *MACROKEY_EXPSEARCH_PATH;
  837. char *amac;
  838.  
  839. pathInst = instdir;
  840. MACROKEY_EXPSEARCH_PATH = "Exp_search_path";
  841.  
  842. strcpy(fnMac,pathInst);
  843. add_path_fn(fnMac,fn_mac);
  844.  
  845. if ( (amac = AMAC_allocWork(0)) == (0) )
  846. return ((-1));
  847. AMAC_load( amac, fnMac );
  848.  
  849. if ( (p = AMAC_getName( amac, MACROKEY_EXPSEARCH_PATH)) == (0) || *p == '\0' )
  850. {
  851. path[0] = '\0';
  852. p = path;
  853.  
  854. dir = _tarosc_instdir[(2)];
  855. if ( *dir )
  856. {
  857. if ( p != path ) { *p = ';'; ++p; }
  858. strcpy(p, dir);
  859. p += strlen(dir);
  860. }
  861. dir = _tarosc_instdir[(3)];
  862. if ( *dir )
  863. {
  864. if ( p != path ) { *p = ';'; ++p; }
  865. strcpy(p, dir);
  866. p += strlen(dir);
  867. }
  868. dir = _tarosc_instdir[(4)];
  869. if ( *dir )
  870. {
  871. if ( p != path ) { *p = ';'; ++p; }
  872. strcpy(p, dir);
  873. p += strlen(dir);
  874. }
  875. dir = _tarosc_instdir[(6)];
  876. if ( *dir )
  877. {
  878. if ( p != path ) { *p = ';'; ++p; }
  879. strcpy(p, dir);
  880. p += strlen(dir);
  881. }
  882. if ( p != path )
  883. AMAC_setKey( amac, MACROKEY_EXPSEARCH_PATH, path );
  884. } else
  885. {
  886. strcpy(path,p);
  887.  
  888. dir = _tarosc_instdir[(2)];
  889. if ( _chk_pathlist(path,dir) == 0 )
  890. {
  891. strcat(path,";");
  892. strcat(path,dir);
  893. }
  894. dir = _tarosc_instdir[(3)];
  895. if ( _chk_pathlist(path,dir) == 0 )
  896. {
  897. strcat(path,";");
  898. strcat(path,dir);
  899. }
  900. dir = _tarosc_instdir[(4)];
  901. if ( _chk_pathlist(path,dir) == 0 )
  902. {
  903. strcat(path,";");
  904. strcat(path,dir);
  905. }
  906. dir = _tarosc_instdir[(6)];
  907. if ( _chk_pathlist(path,dir) == 0 )
  908. {
  909. strcat(path,";");
  910. strcat(path,dir);
  911. }
  912. AMAC_setKey( amac, MACROKEY_EXPSEARCH_PATH, path );
  913. }
  914. AMAC_save( amac, fnMac, fn_mac);
  915. AMAC_freeWork(amac);
  916.  
  917. return ((0));
  918. }
  919.  
  920. int _chk_pathlist( char *pathlist, char *path )
  921. {
  922. char s1[1024], s2[256];
  923.  
  924. strcpy(s1,pathlist); FS_strupr(s1);
  925. strcpy(s2,path); FS_strupr(s2);
  926. if ( strstr(s1,s2) == (0) )
  927. return (0);
  928. else
  929. return (1);
  930. }
  931. # 745 "insttaro.c"
  932. int _gsplay_config(char *instdir, int item_setup)
  933. {
  934. int ret;
  935. char *mnu_midi, *mnu_internal, *mnu_rsmidi, *mnu;
  936. char tmp[128], *msg;
  937.  
  938. _gsplay_midi = 0;
  939. _gsplay_rsmidi = -1;
  940. _gsplay_internal = -1;
  941.  
  942. if ( item_setup )
  943. {
  944. mnu_midi = MNU_open();
  945. mnu_rsmidi = MNU_open();
  946. mnu_internal = MNU_open();
  947.  
  948. MNU_datAdd( mnu_midi , 0, 'A', Rom16x16, 0x01, "", (0), "port A (card-1)");
  949. MNU_datAdd( mnu_midi , 0, 'B', Rom16x16, 0x02, "", (0), "port B (card-1)");
  950. MNU_datAdd( mnu_midi , 0, 'C', Rom16x16, 0x03, "", (0), "port C (card-2)");
  951. MNU_datAdd( mnu_midi , 0, 'D', Rom16x16, 0x04, "", (0), "port D (card-2)");
  952. MNU_datAdd( mnu_midi , 0, 'E', Rom16x16, 0x05, "", (0), "port E (card-3)");
  953. MNU_datAdd( mnu_midi , 0, 'F', Rom16x16, 0x06, "", (0), "port F (card-3)");
  954. MNU_datAdd( mnu_midi , 0, 'G', Rom16x16, 0x07, "", (0), "port G (card-4)");
  955. MNU_datAdd( mnu_midi , 0, 'H', Rom16x16, 0x08, "", (0), "port H (card-4)");
  956. MNU_datAdd( mnu_midi , 0, 0 , (0) , 0, "", 0, (0) );
  957. MNU_datAdd( mnu_midi , 0, 'O', Rom16x16, 0x00, "", (0), "MIDI device not use");
  958. MNU_setPosition(mnu_midi,-1);
  959.  
  960. MNU_datAdd( mnu_rsmidi , 0, '1', Rom16x16, 0x21, "", (0), "ON  使う");
  961. MNU_datAdd( mnu_rsmidi , 0, '0', Rom16x16, 0x20, "", (0), "OFF 使わない");
  962. MNU_setPosition(mnu_rsmidi,-1);
  963.  
  964. MNU_datAdd( mnu_internal, 0, '1', Rom16x16, 0x31, "", (0), "ON  使う");
  965. MNU_datAdd( mnu_internal, 0, '0', Rom16x16, 0x30, "", (0), "OFF 使わない");
  966. MNU_setPosition(mnu_internal,-1);
  967.  
  968. do
  969. {
  970. if ( (mnu = MNU_open()) == (0) )
  971. break;
  972. MNU_setTitle( mnu, Fnt16x16, "GSPLAY 演奏データ出力デバイス" );
  973. if ( _gsplay_midi < 0 )
  974. {
  975. msg = "not use";
  976. } else
  977. {
  978. msg = tmp;
  979. sprintf(msg,"port %c",_gsplay_midi + 'A' );
  980. }
  981. MNU_mnuAdd( mnu, 0, 'M', Fnt16x16, mnu_midi , "MIDI         [%s]", msg);
  982.  
  983. msg = (_gsplay_rsmidi < 0) ? "not use" : "ON";
  984. MNU_mnuAdd( mnu, 0, 'I', Fnt16x16, mnu_rsmidi , "RS-232C MIDI [%s]", msg);
  985.  
  986. msg = (_gsplay_internal < 0) ? "not use" : "ON";
  987. MNU_mnuAdd( mnu, 0, 'I', Fnt16x16, mnu_internal, "内蔵音源     [%s]", msg);
  988.  
  989. MNU_datAdd( mnu, 0, 0 , (0) , 0, "", 0, (0) );
  990. MNU_datAdd( mnu, 0, 'S', Rom16x16, 0xFF, "", 0, " <<< 設定終了 >>>");
  991.  
  992. MNU_setPosition(mnu,(1));
  993. ret = MNU_start(mnu);
  994. if ( ret >= 0x01 && ret <= 0x08 )
  995. {
  996. _gsplay_midi = ret - 0x01;
  997. } else
  998. {
  999. switch ( ret )
  1000. {
  1001. case 0x00: _gsplay_midi = -1; break;
  1002. case 0x20: _gsplay_rsmidi = -1; break;
  1003. case 0x21: _gsplay_rsmidi = 0; break;
  1004. case 0x30: _gsplay_internal = -1; break;
  1005. case 0x31: _gsplay_internal = 0; break;
  1006. }
  1007. }
  1008. MNU_close(mnu);
  1009. MNU_datClear(mnu);
  1010. } while ( ret != 0xFF );
  1011. MNU_datClear(mnu_midi );
  1012. MNU_datClear(mnu_rsmidi );
  1013. MNU_datClear(mnu_internal);
  1014. }
  1015. return ((0));
  1016. }
  1017.  
  1018. int _gsplay_install(char *instdir,int item_setup)
  1019. {
  1020. int ret, att, len, drv;
  1021. char *srcdir, *instfile;
  1022. char *item_prog, *item_ttl, item_para[128];
  1023. int item_att;
  1024. char tmp[256], tmp2[256], ttl[80];
  1025.  
  1026. srcdir = "/TAROPYON/GSPLAY";
  1027. instfile = "*.exp *.dat *.gsd *.doc *.mex *.mid *.mtk *.kok *.tif";
  1028. item_prog = "GSPLAY.EXP";
  1029. item_ttl = "GSPLAY/pure";
  1030. item_para[0] = '\0';
  1031. item_att = 2;
  1032.  
  1033. syl_putf("GSPLAY INSTALL START");
  1034. FS_chdrv( toupper(DirStart[0]) - 'A' );
  1035. if ( *srcdir == '\0' || *srcdir == '.' )
  1036. {
  1037. strcpy(tmp,DirStart);
  1038. ret = strlen(tmp);
  1039. if ( ret > 3 && FS_isDelim(tmp[ret-1]) )
  1040. tmp[ret-1] = '\0';
  1041. } else
  1042. {
  1043. if ( FS_isDelim(*srcdir) )
  1044. strcpy(tmp,srcdir);
  1045. else
  1046. sprintf(tmp,"%s%s",DirStart, srcdir);
  1047. }
  1048. FS_getFullPn(tmp2,tmp);
  1049. srcdir = tmp2;
  1050. att = _tarosc_fcopy_att;
  1051. ret = FCOPY_exec(att, srcdir, instfile, instdir);
  1052.  
  1053.  
  1054. syl_putf("GSPLAY CUSTOMIZE");
  1055. _gsplay_setup(instdir,item_setup);
  1056.  
  1057. if ( ret == (0) && item_setup != 0 )
  1058. {
  1059. syl_putf("GSPLAY ITEM SETUP");
  1060.  
  1061. strcpy(tmp,instdir);
  1062. add_path_fn(tmp,item_prog);
  1063.  
  1064. if ( _gsplay_midi >= 0 )
  1065. {
  1066. item_ttl = "GSPLAY/pure (MIDI)";
  1067. sprintf(item_para,"-gsPort %c", _gsplay_midi + 'A');
  1068. item_setApl( drv, 1024, item_ttl, tmp, item_para, item_att );
  1069. }
  1070. if ( _gsplay_internal >= 0 )
  1071. {
  1072. item_ttl = "GSPLAY/pure (内蔵)";
  1073. strcpy(item_para,"-gsPort A -intPort A");
  1074. item_setApl( drv, 1024, item_ttl, tmp, item_para, item_att );
  1075. }
  1076. if ( _gsplay_rsmidi >= 0 )
  1077. {
  1078. item_ttl = "GSPLAY/pure (RS)";
  1079. strcpy(item_para,"-rsmidi -gsPort R");
  1080. item_setApl( drv, 1024, item_ttl, tmp, item_para, item_att );
  1081. }
  1082. }
  1083.  
  1084. return (ret);
  1085. }
  1086.  
  1087. int _gsplay_setup(char *instdir,int item_setup)
  1088. {
  1089. return ((0));
  1090. }
  1091. # 909 "insttaro.c"
  1092. int _he386_install(char *instdir,int item_setup)
  1093. {
  1094. int ret, att, len, drv;
  1095. char *srcdir, *instfile;
  1096. char tmp[256], tmp2[256];
  1097.  
  1098. srcdir = "/TAROPYON/HE386";
  1099. instfile = "*.exp *.dll *.cci *.c *.h *.doc *.mml *.def";
  1100.  
  1101. syl_putf("HE386 INSTALL START");
  1102. FS_chdrv( toupper(DirStart[0]) - 'A' );
  1103. if ( *srcdir == '\0' || *srcdir == '.' )
  1104. {
  1105. strcpy(tmp,DirStart);
  1106. ret = strlen(tmp);
  1107. if ( ret > 3 && FS_isDelim(tmp[ret-1]) )
  1108. tmp[ret-1] = '\0';
  1109. } else
  1110. {
  1111. if ( FS_isDelim(*srcdir) )
  1112. strcpy(tmp,srcdir);
  1113. else
  1114. sprintf(tmp,"%s%s",DirStart, srcdir);
  1115. }
  1116. FS_getFullPn(tmp2,tmp);
  1117. srcdir = tmp2;
  1118. att = _tarosc_fcopy_att;
  1119. ret = FCOPY_exec(att, srcdir, instfile, instdir);
  1120.  
  1121. return (ret);
  1122. }
  1123. # 946 "insttaro.c"
  1124. int _cci_install(char *instdir,int item_setup)
  1125. {
  1126. int ret, att, len, drv;
  1127. char *srcdir, *instfile;
  1128. char tmp[256], tmp2[256];
  1129.  
  1130. srcdir = "/TAROPYON/CCI";
  1131. instfile = "*.exp *.dll *.doc *.lst *.h *.c *.bat *.exe";
  1132.  
  1133. syl_putf("CCI INSTALL START");
  1134. FS_chdrv( toupper(DirStart[0]) - 'A' );
  1135. if ( *srcdir == '\0' || *srcdir == '.' )
  1136. {
  1137. strcpy(tmp,DirStart);
  1138. ret = strlen(tmp);
  1139. if ( ret > 3 && FS_isDelim(tmp[ret-1]) )
  1140. tmp[ret-1] = '\0';
  1141. } else
  1142. {
  1143. if ( FS_isDelim(*srcdir) )
  1144. strcpy(tmp,srcdir);
  1145. else
  1146. sprintf(tmp,"%s%s",DirStart, srcdir);
  1147. }
  1148. FS_getFullPn(tmp2,tmp);
  1149. srcdir = tmp2;
  1150. att = _tarosc_fcopy_att;
  1151. ret = FCOPY_exec(att, srcdir, instfile, instdir);
  1152.  
  1153. return (ret);
  1154. }
  1155. # 982 "insttaro.c"
  1156. int _dostool_install(char *instdir,int item_setup)
  1157. {
  1158. int ret, att, len, drv;
  1159. char *srcdir, *instfile;
  1160. char tmp[256], tmp2[256];
  1161.  
  1162. srcdir = "/TAROPYON/DOSTOOL";
  1163. instfile = "*.exe *.doc";
  1164.  
  1165. syl_putf("DOS TOOL INSTALL START");
  1166. FS_chdrv( toupper(DirStart[0]) - 'A' );
  1167. if ( *srcdir == '\0' || *srcdir == '.' )
  1168. {
  1169. strcpy(tmp,DirStart);
  1170. ret = strlen(tmp);
  1171. if ( ret > 3 && FS_isDelim(tmp[ret-1]) )
  1172. tmp[ret-1] = '\0';
  1173. } else
  1174. {
  1175. if ( FS_isDelim(*srcdir) )
  1176. strcpy(tmp,srcdir);
  1177. else
  1178. sprintf(tmp,"%s%s",DirStart, srcdir);
  1179. }
  1180. FS_getFullPn(tmp2,tmp);
  1181. srcdir = tmp2;
  1182. att = _tarosc_fcopy_att;
  1183. ret = FCOPY_exec(att, srcdir, instfile, instdir);
  1184.  
  1185. return (ret);
  1186. }
  1187. # 1018 "insttaro.c"
  1188. int _tostool_install(char *instdir,int item_setup)
  1189. {
  1190. int ret, att, len, drv;
  1191. char *srcdir, *instfile;
  1192. char tmp[256], tmp2[256];
  1193.  
  1194. srcdir = "/TAROPYON/TOSTOOL";
  1195. instfile = "*.exp *.dll *.doc";
  1196.  
  1197. syl_putf("TOS TOOL INSTALL START");
  1198. FS_chdrv( toupper(DirStart[0]) - 'A' );
  1199. if ( *srcdir == '\0' || *srcdir == '.' )
  1200. {
  1201. strcpy(tmp,DirStart);
  1202. ret = strlen(tmp);
  1203. if ( ret > 3 && FS_isDelim(tmp[ret-1]) )
  1204. tmp[ret-1] = '\0';
  1205. } else
  1206. {
  1207. if ( FS_isDelim(*srcdir) )
  1208. strcpy(tmp,srcdir);
  1209. else
  1210. sprintf(tmp,"%s%s",DirStart, srcdir);
  1211. }
  1212. FS_getFullPn(tmp2,tmp);
  1213. srcdir = tmp2;
  1214. att = _tarosc_fcopy_att;
  1215. ret = FCOPY_exec(att, srcdir, instfile, instdir);
  1216.  
  1217. return (ret);
  1218. }
  1219. # 1054 "insttaro.c"
  1220. int tarosdk_install()
  1221. {
  1222. static char *buf[4] =
  1223. {
  1224. "softname    \"サイドワークプログラム集\"",
  1225. "instfile    /TAROPYON/SDKTOOL    \"*.exp *.doc\"",
  1226. "help        SDKTOOL.GGG",
  1227. (0)
  1228. };
  1229.  
  1230. install_exec(buf);
  1231. return (0);
  1232. }
  1233.  
  1234. int splib_install()
  1235. {
  1236. static char *buf[4] =
  1237. {
  1238. "softname    \"High C用ライブラリ (splib)\"",
  1239. "instfile    /TAROPYON/SPLIB    \"*.*\"",
  1240. "help        splib.ggg",
  1241. (0)
  1242. };
  1243.  
  1244. install_exec(buf);
  1245. return (0);
  1246. }
  1247.  
  1248. int silib_install()
  1249. {
  1250. static char *buf[4] =
  1251. {
  1252. "softname    \"High C用ライブラリ (silib)\"",
  1253. "instfile    /TAROPYON/SILIB    \"*.*\"",
  1254. "help        silib.ggg",
  1255. (0)
  1256. };
  1257.  
  1258. install_exec(buf);
  1259. return (0);
  1260. }
  1261.  
  1262. int dtalib_install()
  1263. {
  1264. static char *buf[4] =
  1265. {
  1266. "softname    \"DTA ライブラリ\"",
  1267. "instfile    /TAROPYON/DTALIB    \"*.*\"",
  1268. "help        dtalib.ggg",
  1269. (0)
  1270. };
  1271.  
  1272. install_exec(buf);
  1273. return (0);
  1274. }
  1275. # 2 "instkok2.c"
  1276. int _call_gsplay( char *para);
  1277.  
  1278. char *get_inst_gsplaydata_mnu()
  1279. {
  1280. char *mnu;
  1281.  
  1282. if ( (mnu = MNU_open()) == (0) )
  1283. return ((0));
  1284. MNU_datAdd( mnu, 0, 'D', Rom16x16, 0, "install_demodemo", 0, "DEMODEMO");
  1285. MNU_datAdd( mnu, 0, 'F', Rom16x16, 0, "install_fdoal" , 0, "フランス人形とプードル");
  1286. MNU_datAdd( mnu, 0, 'T', Rom16x16, 0, "install_trainm" , 0, "走れ汽車ぽっぽ");
  1287. return (mnu);
  1288. }
  1289.  
  1290. int install_demodemo()
  1291. {
  1292. static char *buf[5] =
  1293. {
  1294. "softname    \"DEMODEMO\"",
  1295. "instfile    /TAROPYON/HORIKEN/DEMODEMO    \"*.*\"",
  1296. "help        demodemo.ggg",
  1297. "demo        \"再生\"    _gsplay_demodemo",
  1298. (0)
  1299. };
  1300.  
  1301. return install_exec(buf);
  1302. }
  1303. int _gsplay_demodemo()
  1304. {
  1305. return _call_gsplay( "../HORIKEN/DEMODEMO/demodemo.mid" );
  1306. }
  1307.  
  1308.  
  1309. int install_fdoal()
  1310. {
  1311. static char *buf[5] =
  1312. {
  1313. "softname    \"フランス人形とプードル\"",
  1314. "instfile    /TAROPYON/HORIKEN/FDOAL    \"*.*\"",
  1315. "help        fdoal.ggg",
  1316. "demo        \"再生\"    _gsplay_fdoal",
  1317. (0)
  1318. };
  1319.  
  1320. return install_exec(buf);
  1321. }
  1322. int _gsplay_fdoal()
  1323. {
  1324. return _call_gsplay( "../HORIKEN/FDOAL/fdoal.mid" );
  1325. }
  1326.  
  1327. int install_trainm()
  1328. {
  1329. static char *buf[5] =
  1330. {
  1331. "softname    \"走れ汽車ぽっぽ\"",
  1332. "instfile    /TAROPYON/HORIKEN/TRAINM    \"*.*\"",
  1333. "help        trainm.ggg",
  1334. "demo        \"再生\"    _gsplay_trainm",
  1335. (0)
  1336. };
  1337.  
  1338. return install_exec(buf);
  1339. }
  1340. int _gsplay_trainm()
  1341. {
  1342. return _call_gsplay( "../HORIKEN/TRAINM/trainm.mid" );
  1343. }
  1344.  
  1345. int _call_gsplay( char *para)
  1346. {
  1347. char tmp[256], fn_gsplay[256], fn_mid[256], para_gsplay[256];
  1348.  
  1349. FS_chdrv(toupper(DirStart[0]) - 'A');
  1350. sprintf(tmp, "%s../%s", DirStart, "GSPLAY/gsplay.exp");
  1351. FS_getFullPn(fn_gsplay,tmp);
  1352. sprintf(tmp, "%s../HORIKEN/%s", DirStart, para);
  1353. FS_getFullPn(fn_mid ,tmp);
  1354. sprintf(para_gsplay,"-quick %s",fn_mid);
  1355.  
  1356. exprun(fn_gsplay, para_gsplay);
  1357.  
  1358. return (0);
  1359. }
  1360. # 5 "instexec.c"
  1361. int install_exec( char **probuf )
  1362. {
  1363. int ret, i, fcopy_att, drv, argc, srcdrv;
  1364. char **argv, *p, *typename;
  1365. char instdir[256];
  1366. char softname[80];
  1367. char srcdir[128], instfile[128];
  1368. char helpfn[128];
  1369. char item_ttl[80],item_prog[32], item_para[128];
  1370. int item_setup, item_num, item_att;
  1371. char arcfn[128], arcdir[128], arcflag;
  1372. char runfn[128], runpara[128];
  1373. char demo_msg[80], demo_func[80];
  1374. char *lhalib;
  1375. char *dlgTxm;
  1376. char tmp[256], tmp2[256];
  1377.  
  1378. fcopy_att = (0x00000001) | (0x00000010) | (0x00000100);
  1379. instdir[0] = '\0';
  1380. srcdir[0] = '\0';
  1381. instfile[0] = '\0';
  1382. helpfn[0] = '\0';
  1383. item_num = 0;
  1384. item_ttl[0] = '\0';
  1385. arcfn[0] = '\0';
  1386. arcdir[0] = '\0';
  1387. arcflag = 0;
  1388. runpara[0] = '\0';
  1389. runfn[0] = '\0';
  1390. demo_msg[0] = '\0';
  1391. demo_func[0] = '\0';
  1392.  
  1393. srcdrv = toupper(DirStart[0]) - 'A';
  1394.  
  1395.  
  1396. for ( i = 0; probuf[i] != (0); ++i )
  1397. {
  1398. if ( (argc = DTA_makeArg(probuf[i],&argv)) > 0 )
  1399. {
  1400. typename = argv[0];
  1401. if ( strcmpi(typename,"softname") == 0 )
  1402. {
  1403. if ( argc >= 2 )
  1404. strcpy( softname, argv[1]);
  1405. } else if ( strcmpi(typename,"instfile") == 0 )
  1406. {
  1407. if ( argc >= 2 )
  1408. strcpy(srcdir , argv[1]);
  1409. if ( argc >= 3 )
  1410. strcpy(instfile, argv[2]);
  1411. if ( argc >= 4 )
  1412. {
  1413. if ( strcmpi(argv[3],"-nocopydir") == 0 )
  1414. fcopy_att &= (~(0x00000001));
  1415. }
  1416. } else if ( strcmpi(typename,"help") == 0 )
  1417. {
  1418. if ( argc >= 2 )
  1419. {
  1420. if ( FS_isDelim(argv[1][0]) )
  1421. strcpy(helpfn, argv[1]);
  1422. else if ( srcdir[0] != '\0' )
  1423. sprintf(helpfn,"%s/%s",srcdir,argv[1]);
  1424. }
  1425. } else if ( strcmpi(typename,"item") == 0 )
  1426. {
  1427. ++item_num;
  1428. if ( argc >= 5 )
  1429. {
  1430. strcpy(item_ttl , argv[1]);
  1431. strcpy(item_prog, argv[2]);
  1432. strcpy(item_para, argv[3]);
  1433. item_att = atoi(argv[4]);
  1434. }
  1435. } else if ( strcmpi(typename,"arcfile") == 0 )
  1436. {
  1437. if ( argc >= 2 )
  1438. {
  1439. strcpy( arcfn , argv[1]);
  1440. arcflag = 1;
  1441. }
  1442. if ( argc >= 3 )
  1443. strcpy( arcdir, argv[2]);
  1444. } else if ( strcmpi(typename,"runexp") == 0 )
  1445. {
  1446. if ( argc >= 2 && srcdir[0] )
  1447. {
  1448. strcpy(runfn,srcdir);
  1449. add_path_fn(runfn,argv[1]);
  1450. }
  1451. if ( argc >= 3 )
  1452. strcpy(runpara,argv[2]);
  1453. } else if ( strcmpi(typename,"demo") == 0 )
  1454. {
  1455. if ( argc >= 3 )
  1456. {
  1457. strcpy(demo_msg ,argv[1]);
  1458. strcpy(demo_func,argv[2]);
  1459. }
  1460. }
  1461. DTA_clearArg(argc,argv);
  1462. }
  1463. }
  1464.  
  1465.  
  1466. _TOP:
  1467. syl_putf("%s",softname);
  1468. dlgTxm = DlgTxm_open(ColBoxNormal);
  1469. DlgTxm_setTitle(dlgTxm,Fnt16x16,softname);
  1470. DlgTxm_putf( dlgTxm, Fnt16x16, (1),
  1471. "%s をインストールします。", softname );
  1472. DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, (_ScnCol_black), (_ScnColTbl[ 7]), (_ScnCol_hilight), (_ScnCol_dark), '\r' , 0x7300 ,
  1473. 1, "", (0), "インストール : [実行]");
  1474. DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, (_ScnCol_black), (_ScnColTbl[ 7]), (_ScnCol_hilight), (_ScnCol_dark), 'H' , 0x2300 ,
  1475. 2, "inst_help", helpfn, "説明 : [H]");
  1476. if ( runfn[0] )
  1477. {
  1478. DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, (_ScnCol_black), (_ScnColTbl[ 7]), (_ScnCol_hilight), (_ScnCol_dark), 'R' , 0x1400 ,
  1479. 3, "", (0), "実行 : [R]");
  1480. } else if ( demo_msg[0] )
  1481. {
  1482. DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, (_ScnCol_black), (_ScnColTbl[ 7]), (_ScnCol_hilight), (_ScnCol_dark), 'D' , 0x2000 ,
  1483. 3, "", (0), "%s : [D]", demo_msg);
  1484. }
  1485. DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, (_ScnCol_black), (_ScnColTbl[ 7]), (_ScnCol_hilight), (_ScnCol_dark), '\x1B', 0x7200,
  1486. 4, "", (0), "取消 : [取消]");
  1487. DlgTxm_setSize(dlgTxm,320,40);
  1488. DlgTxm_setPosition(dlgTxm,(1));
  1489. do
  1490. {
  1491. ret = DlgTxm_start(dlgTxm);
  1492. } while ( ret == 2 );
  1493. DlgTxm_close(dlgTxm);
  1494. if ( ret == 3 )
  1495. {
  1496. if ( runfn[0] )
  1497. {
  1498. dlgTxm = DlgTxm_open(ColBoxCaution);
  1499. DlgTxm_setTitle(dlgTxm,Fnt16x16,softname);
  1500. DlgTxm_putf( dlgTxm, Fnt16x16, (1),
  1501. "%s を実行します。", softname );
  1502. DlgTxm_putf( dlgTxm, Fnt16x12, (1),"");
  1503. DlgTxm_putf( dlgTxm, Fnt16x16, (1),
  1504. "※ メモリが不足している場合は実行できません。" );
  1505. DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, (_ScnCol_black), (_ScnColTbl[ 7]), (_ScnCol_hilight), (_ScnCol_dark), '\r' , 0x7300 ,
  1506. 1, "", (0), "実行 : [実行]");
  1507. DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, (_ScnCol_black), (_ScnColTbl[ 7]), (_ScnCol_hilight), (_ScnCol_dark), '\x1B', 0x7200,
  1508. 0, "", (0), "取消 : [取消]");
  1509. DlgTxm_setSize(dlgTxm,400,40);
  1510. DlgTxm_setPosition(dlgTxm,(1));
  1511. ret = DlgTxm_start(dlgTxm);
  1512. DlgTxm_close(dlgTxm);
  1513. if ( ret == 1 )
  1514. exprun(runfn,runpara);
  1515. } else if ( demo_msg )
  1516. {
  1517. _funcCall(demo_func, 0);
  1518. }
  1519. goto _TOP;
  1520. } else if ( ret != 1 )
  1521. goto _RET;
  1522.  
  1523.  
  1524.  
  1525. if ( arcfn[0] && arcdir[0] )
  1526. {
  1527. dlgTxm = DlgTxm_open(ColBoxNormal);
  1528. DlgTxm_setTitle(dlgTxm,Fnt16x16,softname);
  1529. DlgTxm_putf( dlgTxm, Fnt16x16, (1),
  1530. "ソ\ースプログラムもインストールしますか?" );
  1531. DlgTxm_setBtn( dlgTxm, Fnt16x16, 160, 20, (_ScnCol_black), (_ScnColTbl[ 7]), (_ScnCol_hilight), (_ScnCol_dark), 'S' , 0x1F00 ,
  1532. 1, "", 0, "ソースをインストールする : [S]");
  1533. DlgTxm_setBtn( dlgTxm, Fnt16x16, 160, 20, (_ScnCol_black), (_ScnColTbl[ 7]), (_ScnCol_hilight), (_ScnCol_dark), '\x1B', 0x7200,
  1534. 0, "", 0, "インストールしない : [取消]");
  1535. DlgTxm_setSize(dlgTxm,480,40);
  1536. DlgTxm_setPosition(dlgTxm,(1));
  1537. ret = DlgTxm_start(dlgTxm);
  1538. DlgTxm_close(dlgTxm);
  1539. arcflag = (ret == 1) ? 1 : 0;
  1540. }
  1541.  
  1542.  
  1543. ret = APL_setInstallDir(instdir,"%s : インストール先指定", softname);
  1544. if ( ret )
  1545. goto _TOP;
  1546.  
  1547. dlgTxm = DlgTxm_open(ColBoxNormal);
  1548. DlgTxm_setTitle(dlgTxm,Fnt16x16,softname);
  1549. DlgTxm_putf( dlgTxm, Fnt16x16, (1),
  1550. "%s", instdir );
  1551. DlgTxm_putf( dlgTxm, Fnt16x16, (1),
  1552. "このディレクトリにインストールしてもいいですか?" );
  1553. DlgTxm_putf( dlgTxm, Fnt16x12, (1),"");
  1554. if ( item_ttl[0] )
  1555. {
  1556. DlgTxm_putf( dlgTxm, Fnt16x16, (1),
  1557. "インストール1 … ファイルを複写してTownsMENU にアイテム登録");
  1558. DlgTxm_putf( dlgTxm, Fnt16x16, (1),
  1559. "インストール2 … ファイルを複写(アイテム登録はしない)    ");
  1560.  
  1561. DlgTxm_setBtn( dlgTxm, Fnt16x16, 144, 20, (_ScnCol_black), (_ScnColTbl[ 7]), (_ScnCol_hilight), (_ScnCol_dark), '\r' , 0x7300 , 1, "", 0, "インストール1 : [実行]");
  1562. DlgTxm_setBtn( dlgTxm, Fnt16x16, 144, 20, (_ScnCol_black), (_ScnColTbl[ 7]), (_ScnCol_hilight), (_ScnCol_dark), 'C' , 0x2C00 , 2, "", 0, "インストール2 : [C]");
  1563. } else
  1564. {
  1565. DlgTxm_setBtn( dlgTxm, Fnt16x16, 144, 20, (_ScnCol_black), (_ScnColTbl[ 7]), (_ScnCol_hilight), (_ScnCol_dark), '\r' , 0x7300 , 2, "", 0, "インストール : [実行]");
  1566. }
  1567. DlgTxm_setBtn( dlgTxm, Fnt16x16, 144, 20, (_ScnCol_black), (_ScnColTbl[ 7]), (_ScnCol_hilight), (_ScnCol_dark), '\x1B', 0x7200, 3, "", 0, "取消 : [取消]");
  1568. DlgTxm_setSize(dlgTxm,320,40);
  1569. DlgTxm_setPosition(dlgTxm,(1));
  1570. ret = DlgTxm_start(dlgTxm);
  1571. DlgTxm_close(dlgTxm);
  1572. if ( ret != 1 && ret != 2 )
  1573. goto _TOP;
  1574. item_setup = (ret == 1 ? 1 : 0);
  1575.  
  1576.  
  1577.  
  1578. syl_putf("INSTALL START");
  1579. FS_chdrv(srcdrv);
  1580. if ( *srcdir == '\0' || *srcdir == '.' )
  1581. {
  1582. strcpy(tmp,DirStart);
  1583. ret = strlen(tmp);
  1584. if ( ret > 3 && FS_isDelim(tmp[ret-1]) )
  1585. tmp[ret-1] = '\0';
  1586. } else
  1587. {
  1588. if ( FS_isDelim(*srcdir) )
  1589. strcpy(tmp,srcdir);
  1590. else
  1591. sprintf(tmp,"%s%s",DirStart, srcdir);
  1592. }
  1593. if ( instfile[0] )
  1594. {
  1595. FS_getFullPn(tmp2,tmp);
  1596. srcdir = tmp2;
  1597. ret = FCOPY_exec(fcopy_att, srcdir, instfile, instdir);
  1598. }
  1599.  
  1600.  
  1601. if ( arcfn[0] && arcflag )
  1602. {
  1603. syl_putf("ARC(.LZH) FILE EXTRACT");
  1604. FS_chdrv(srcdrv);
  1605. strcpy(tmp,srcdir);
  1606. add_path_fn(tmp,arcfn);
  1607.  
  1608. strcpy(tmp2,instdir);
  1609. if ( arcdir[0] )
  1610. add_path_fn(tmp2,arcdir);
  1611. if ( (lhalib = LHA_openArc(tmp)) != (0) )
  1612. {
  1613. ret = LHA_extractAll(lhalib,tmp2);
  1614. LHA_closeArc(lhalib);
  1615. } else
  1616. {
  1617. syl_putf("ARC OPEN ERROR");
  1618. ret = (-1);
  1619. }
  1620. }
  1621.  
  1622.  
  1623. if ( ret == (0) && item_setup != 0 )
  1624. {
  1625. syl_putf("ITEM SETUP");
  1626. drv = toupper(instdir[0]) - 'A';
  1627. if ( item_num == 1 )
  1628. {
  1629. strcpy(tmp,instdir);
  1630. add_path_fn(tmp,item_prog);
  1631. item_setApl( drv, 1024, item_ttl, tmp, item_para, item_att );
  1632. } else
  1633. {
  1634. for ( i = 0; probuf[i] != (0); ++i )
  1635. {
  1636. if ( (argc = DTA_makeArg(probuf[i],&argv)) > 0 )
  1637. {
  1638. typename = argv[0];
  1639. if ( strcmpi(typename,"item") == 0 )
  1640. {
  1641. if ( argc >= 5 )
  1642. {
  1643. strcpy(item_ttl , argv[1]);
  1644. strcpy(item_prog, argv[2]);
  1645. strcpy(item_para, argv[3]);
  1646. item_att = atoi(argv[4]);
  1647. strcpy(tmp,instdir);
  1648. add_path_fn(tmp,item_prog);
  1649. item_setApl( drv, 1024, item_ttl, tmp, item_para, item_att );
  1650. }
  1651. }
  1652. DTA_clearArg(argc,argv);
  1653. }
  1654. }
  1655. }
  1656. }
  1657. install_end( softname, ret );
  1658.  
  1659. _RET:
  1660. syl_clear();
  1661.  
  1662. return (0);
  1663. }
  1664. # 5 "instlib.c"
  1665. int _puts_bold(int x, int y, int col, char *s);
  1666. # 11 "instlib.c"
  1667. int syl_clear()
  1668. {
  1669. char *msg, tmp[80];
  1670.  
  1671. SCN_wrtPage(1);
  1672. PD_curDec();
  1673.  
  1674. msg = "TaroPYON SoftWare collection installer";
  1675.  
  1676. SCN_boxf(0,464,639,479,0,ColMesh);
  1677.  
  1678. SCN_puts(Fnt16x16,msg,272+1,464+1,0,(_ScnCol_black) ,0);
  1679. SCN_puts(Fnt16x16,msg,272 ,464 ,0,PltNoWhite,0);
  1680.  
  1681. PD_curInc();
  1682. }
  1683. # 32 "instlib.c"
  1684. int syl_putf(char *form)
  1685. {
  1686. char tmp[256];
  1687. char *ap;
  1688. int n, x;
  1689.  
  1690. (ap = (char *)(&form) + sizeof(int));
  1691. vsprintf(tmp+6,form,ap);
  1692. ;
  1693.  
  1694. SCN_wrtPage(1);
  1695. PD_curDec();
  1696.  
  1697. SCN_boxf(0,464,639,479,0,ColMesh);
  1698.  
  1699. EGB_textDirection(EgbPtr,0);
  1700. EGB_textDisplayDirection(EgbPtr,0);
  1701. EGB_textSpace(EgbPtr,0);
  1702. EGB_textZoom(EgbPtr,0, 8, 16 );
  1703. EGB_textZoom(EgbPtr,1, 16, 16 );
  1704. EGB_fontStyle(EgbPtr,1+4);
  1705. EGB_color(EgbPtr,0,(_ScnColTbl[12]));
  1706. EGB_color(EgbPtr,1,(_ScnCol_black));
  1707. EGB_paintMode(EgbPtr,0x022);
  1708. EGB_writeMode(EgbPtr,0);
  1709.  
  1710. n = strlen(tmp+6);
  1711. x = (640 - n * 8) / 2;
  1712. _setWord(tmp+0, x );
  1713. _setWord(tmp+2, 464+15);
  1714. _setWord(tmp+4, n );
  1715. EGB_sjisString( EgbPtr, tmp);
  1716.  
  1717. PD_curInc();
  1718. }
  1719.  
  1720. int _puts_bold(int x, int y, int col, char *s)
  1721. {
  1722. char para[256];
  1723.  
  1724. EGB_textDirection(EgbPtr,0);
  1725. EGB_textDisplayDirection(EgbPtr,0);
  1726. EGB_textSpace(EgbPtr,0);
  1727. EGB_textZoom(EgbPtr,0, 8, 16 );
  1728. EGB_textZoom(EgbPtr,1, 16, 16 );
  1729. EGB_fontStyle(EgbPtr,1+4);
  1730. EGB_color(EgbPtr,0,col );
  1731. EGB_color(EgbPtr,1,(_ScnCol_black));
  1732. EGB_paintMode(EgbPtr,0x022);
  1733. EGB_writeMode(EgbPtr,0);
  1734.  
  1735. _setWord(para+0, x );
  1736. _setWord(para+2, y+15 );
  1737. _setWord(para+4, strlen(s));
  1738. strcpy(para+6,s);
  1739. EGB_sjisString( EgbPtr, para);
  1740. }
  1741.  
  1742. char *add_path_fn(char *path, char *fn)
  1743. {
  1744. int len;
  1745.  
  1746. len = strlen(path);
  1747.  
  1748. if ( len == 0 || !(path[len-1] == '\\' || path[len-1] == '/') )
  1749. path[len++] = FsPathDelim;
  1750. strcpy( path + len, fn );
  1751. return (path);
  1752. }
  1753. # 106 "instlib.c"
  1754. int tif_load(char *fn)
  1755. {
  1756. char *img;
  1757.  
  1758. SCN_wrtPage(0);
  1759. if ( (img = IMG_open()) != (0) )
  1760. {
  1761. IMG_setPage(img,0);
  1762. IMG_setAtt(img,(0x00010000));
  1763. IMG_setColor( img, (_ScnCol_black), (_ScnCol_white));
  1764. if ( IMG_load(img,fn) == (0) )
  1765. {
  1766.  
  1767. IMG_setPos(img,0,24);
  1768. EGB_color(EgbPtr,1,(_ScnColTbl[15]));
  1769. # 125 "instlib.c"
  1770. EGB_clearScreen(EgbPtr);
  1771. EGB_paintMode(EgbPtr,0x22);
  1772. IMG_dsp(img);
  1773. }
  1774. IMG_close(img);
  1775. }
  1776. SCN_wrtPage(1);
  1777. return ((0));
  1778. }
  1779. # 139 "instlib.c"
  1780. int tiflist_disp( char **list )
  1781. {
  1782. int i, x, y, ret, pixel, md, x0, y0;
  1783. char *img;
  1784. short fr[4];
  1785. char *fn;
  1786.  
  1787. SCN_wrtPage(1);
  1788. APL_save_desktop();
  1789. SCN_boxf(0,0,639,479,0,0);
  1790. SCN_wrtPage(0);
  1791.  
  1792. for ( i = 0; list[i] != (0); ++i )
  1793. {
  1794. fn = list[i];
  1795.  
  1796. if ( (img = IMG_open()) != (0) )
  1797. {
  1798. IMG_setAtt(img,(0x00010000));
  1799. if ( IMG_load(img,fn) == (0) )
  1800. {
  1801. IMG_getFr(img,fr);
  1802. pixel = IMG_getPixel(img);
  1803. switch ( pixel )
  1804. {
  1805. case 1:
  1806. case 4:
  1807. x0 = (640 - (fr[2] - fr[0] + 1)) / 2;
  1808. y0 = (480 - (fr[3] - fr[1] + 1)) / 2;
  1809. md = 3;
  1810. break;
  1811. case 8:
  1812. x0 = (640 - (fr[2] - fr[0] + 1)) / 2;
  1813. y0 = (480 - (fr[3] - fr[1] + 1)) / 2;
  1814. md = 12;
  1815. break;
  1816. case 16:
  1817. if ( fr[2] - fr[0] + 1 <= 320 )
  1818. {
  1819. x0 = (320 - (fr[2] - fr[0] + 1)) / 2;
  1820. y0 = (240 - (fr[3] - fr[1] + 1)) / 2;
  1821. md = 10;
  1822. } else
  1823. {
  1824. x0 = (512 - (fr[2] - fr[0] + 1)) / 2;
  1825. y0 = (480 - (fr[3] - fr[1] + 1)) / 2;
  1826. md = 17;
  1827. }
  1828. break;
  1829. default:
  1830. goto _TIF_ERR;
  1831. }
  1832. IMG_setPos(img,x0,y0);
  1833. PD_curOff();
  1834.  
  1835. EGB_displayPage(EgbPtr,0,0);
  1836. EGB_writePage(EgbPtr,0);
  1837. EGB_clearScreen(EgbPtr);
  1838. EGB_resolution(EgbPtr,0,md);
  1839. if ( md == 3 || md == 10 )
  1840. {
  1841. EGB_resolution(EgbPtr,1,3);
  1842. EGB_writePage(EgbPtr,1);
  1843. EGB_clearScreen(EgbPtr);
  1844. }
  1845.  
  1846. EGB_writePage(EgbPtr,0);
  1847. if ( md == 10 )
  1848. {
  1849. EGB_displayStart(EgbPtr,2,2,2);
  1850. EGB_displayStart(EgbPtr,3,320,240);
  1851. }
  1852. EGB_color(EgbPtr,1,0);
  1853. EGB_clearScreen(EgbPtr);
  1854. IMG_dsp(img);
  1855. if ( md == 3 || md == 10 )
  1856. EGB_displayPage(EgbPtr,1,3);
  1857. else
  1858. EGB_displayPage(EgbPtr,0,1);
  1859.  
  1860. _apl_wait(100 * 8);
  1861. while ( PD_getp(&x,&y) )
  1862. ;
  1863. }
  1864. IMG_close(img);
  1865. }
  1866. }
  1867.  
  1868. EGB_writePage(EgbPtr,0);
  1869. EGB_clearScreen(EgbPtr);
  1870.  
  1871. SCN_sysReinit();
  1872. disp_desktop();
  1873. SCN_wrtPage(1);
  1874. APL_load_desktop();
  1875. syl_clear();
  1876.  
  1877. return ((0));
  1878. }
  1879.  
  1880. int mveplay(char *fnmve, int loop)
  1881. {
  1882. char para[256];
  1883.  
  1884. sprintf(para,"-loop %d %s", loop, fnmve );
  1885.  
  1886. exprun("/OH_TOWNS/DEMOTOOL/mveplay.exp", para );
  1887. return (0);
  1888. }
  1889.  
  1890. int exprun(char *fn, char *para)
  1891. {
  1892. unsigned int siz;
  1893. int md;
  1894. char tmp[256];
  1895. char *dlgTxm;
  1896.  
  1897. siz = APL_getFreeMem();
  1898. if ( siz < 2 * 1024 * 1024 )
  1899. {
  1900. dlgTxm = DlgTxm_open(ColBoxError);
  1901. DlgTxm_setTitle(dlgTxm,Fnt16x16, "OUT OF MEMORY");
  1902.  
  1903. DlgTxm_putf( dlgTxm, Rom16x16, (1),"");
  1904. DlgTxm_putf( dlgTxm, Rom16x16, (1),
  1905. "メモリ不足のため実行できません。" );
  1906. DlgTxm_putf( dlgTxm, Rom16x16, (1),"");
  1907.  
  1908. DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, (_ScnCol_black),
  1909. (_ScnColTbl[ 7]), (_ScnCol_hilight), (_ScnCol_dark), '\r', 0x7300, 0, "", 0, "OK : [実行]");
  1910. DlgTxm_setSize(dlgTxm,480,48);
  1911. DlgTxm_setPosition(dlgTxm,(1));
  1912.  
  1913. DlgTxm_start(dlgTxm);
  1914. DlgTxm_close(dlgTxm);
  1915. return (-1);
  1916. }
  1917. FS_chdrv( toupper(DirStart[0]) - 'A' );
  1918. FS_getDnam(tmp,fn);
  1919. add_path_fn(tmp,".");
  1920. FS_chdir(tmp);
  1921.  
  1922.  
  1923. SCN_wrtPage(1);
  1924. APL_save_desktop();
  1925.  
  1926.  
  1927. md = (4) | (8);
  1928. AplDtaInit();
  1929. if ( para != (0) && *para != '\0' )
  1930. {
  1931. AplDtaSetStr("$MainArg","%s %s", fn, para);
  1932. if ( strlen(fn) + strlen(para) + 1 >= 128 )
  1933. md &= (~(8));
  1934. }
  1935. PCL_exec(fn,md);
  1936.  
  1937.  
  1938. SCN_sysReinit();
  1939. disp_desktop();
  1940. SCN_wrtPage(1);
  1941. APL_load_desktop();
  1942. syl_clear();
  1943.  
  1944. return ((0));
  1945. }
  1946. # 310 "instlib.c"
  1947. int inst_help( int evNo, char *evDat, char *fn)
  1948. {
  1949. char tmp[256];
  1950.  
  1951. FS_chdrv(toupper(DirStart[0]) - 'A');
  1952. sprintf(tmp,"%s.",DirStart);
  1953. FS_chdir(tmp);
  1954.  
  1955. APL_textView(Rom16x16,608,391,17,fn,"HELP FILE : %s", fn);
  1956.  
  1957. return (evNo);
  1958. }
  1959. # 327 "instlib.c"
  1960. int install_end( char *soft_name, int err )
  1961. {
  1962. char *dlgTxm;
  1963. int colbox;
  1964. char *msg;
  1965.  
  1966. msg = err == 0 ? "インストールが終わりました。"
  1967. : "インストールに失敗しました。";
  1968.  
  1969. colbox = 0;
  1970. colbox = SCN_tile_newMixCol(colbox,0x00,(_ScnColTbl[12]),(_ScnColTbl[ 7]));
  1971. if ( (dlgTxm = DlgTxm_open(colbox)) != (0) )
  1972. {
  1973. DlgTxm_setTitle(dlgTxm,Fnt16x16,soft_name);
  1974. DlgTxm_putf( dlgTxm, Fnt16x16, (1), "");
  1975. DlgTxm_putf( dlgTxm, Fnt16x16, (1), msg );
  1976. DlgTxm_putf( dlgTxm, Fnt16x16, (1), "");
  1977. DlgTxm_setBtn( dlgTxm, Fnt16x16, 64, 20, (_ScnCol_black), (_ScnColTbl[ 7]), (_ScnCol_hilight), (_ScnCol_dark), '\r' , 0x7300 , 1, "", 0, "OK : [実行]");
  1978. DlgTxm_setSize(dlgTxm,480,64);
  1979. DlgTxm_setPosition(dlgTxm,(1));
  1980. DlgTxm_start(dlgTxm);
  1981. DlgTxm_close(dlgTxm);
  1982. }
  1983. SCN_tile_free(colbox);
  1984. }
  1985. # 10 "item.c"
  1986. int item_get_newpos( char *pathItem, int fposBase, short *newfrm );
  1987. int item_chkpos( char *pathItem, int fposStart, short *frmchk );
  1988. int item_get_fr( char *pathItem, int fpos, short *fr );
  1989. int item_adjust_pos( short *newfrm );
  1990.  
  1991. int item_setApl( int drv, int icon, char *ttl, char *path, char *para, int att )
  1992. {
  1993. char pathItem[64], prog[128];
  1994. short fr[4];
  1995. int iconGrp;
  1996. int fpos;
  1997. char *ttlGrp;
  1998.  
  1999. ttlGrp = "NEW ITEM";
  2000. iconGrp = 1059;
  2001.  
  2002. sprintf( pathItem, "%c:\\tmenu.itm", drv + 'A');
  2003. if ( FS_isFile(pathItem) != (1) )
  2004. {
  2005. ITM_CreateItemFile(pathItem);
  2006. }
  2007.  
  2008.  
  2009. fr[0] = fr[1] = fr[2] = fr[3] = -1;
  2010. fpos = ITM_GetGrpFPos(pathItem,0,-1,-1,ttlGrp,-1,fr);
  2011. if ( fpos < 0 )
  2012. {
  2013. item_get_newpos( pathItem, 0, fr);
  2014. if ( (fpos = ITM_AddGrpItem(pathItem,0,iconGrp,ttlGrp,fr)) < 0 )
  2015. return ((-1));
  2016. }
  2017.  
  2018.  
  2019. if ( item_get_newpos( pathItem, fpos, fr) < 0 )
  2020. return ((-1));
  2021. FS_dosFn(prog,path);
  2022. FS_strupr(prog);
  2023. if ( ITM_AddAplItem( pathItem, fpos, icon, ttl, prog, para, att, fr) < 0 )
  2024. return ((-1));
  2025. return ((0));
  2026. }
  2027.  
  2028.  
  2029. int item_get_newpos( char *pathItem, int fposBase, short *newfrm )
  2030. {
  2031. int area, x, y, x0, y0;
  2032.  
  2033. for ( area = 0; area < 9; ++area )
  2034. {
  2035. x = area;
  2036. for ( y = 0; y < area; ++y )
  2037. {
  2038. x0 = x * 64; newfrm[0] = x0+8; newfrm[2] = x0 + 63-8;
  2039. y0 = y * 48; newfrm[1] = y0+4; newfrm[3] = y0 + 47-4;
  2040. if ( item_chkpos( pathItem, fposBase, newfrm ) )
  2041. goto _OK;
  2042. }
  2043. y = area;
  2044. for ( x = 0; x <= area; ++x )
  2045. {
  2046. x0 = x * 64; newfrm[0] = x0+8; newfrm[2] = x0 + 63-8;
  2047. y0 = y * 48; newfrm[1] = y0+4; newfrm[3] = y0 + 47-4;
  2048. if ( item_chkpos( pathItem, fposBase, newfrm ) )
  2049. goto _OK;
  2050. }
  2051. }
  2052. _OK:
  2053. x0 = (newfrm[0] + newfrm[2] + 1) / 2 - 12;
  2054. newfrm[0] = (x0+7) & (~7);
  2055. newfrm[1] = newfrm[1] + 4;
  2056. newfrm[2] = newfrm[0] + 24;
  2057. newfrm[3] = newfrm[1] + 24;
  2058. # 86 "item.c"
  2059. return (item_adjust_pos( newfrm ));
  2060. }
  2061.  
  2062. int item_chkpos( char *pathItem, int fposStart, short *frmchk )
  2063. {
  2064. int ret;
  2065. int fpos, nextFPos;
  2066. int etyNum;
  2067. short icnNum;
  2068. char ttlStr[128];
  2069. int atrInf;
  2070. short frm[4];
  2071. int numItem;
  2072. # 105 "item.c"
  2073. if ( (fpos = fposStart) > 0 )
  2074. {
  2075. ret = ITM_GetItmType(pathItem,fpos);
  2076. if ( ret != 1 )
  2077. return (-1);
  2078. ITM_GetGrpData(pathItem,fpos,&etyNum,&icnNum,ttlStr,&nextFPos,frm);
  2079. # 115 "item.c"
  2080. while ( etyNum-- > 0 )
  2081. {
  2082. if ( (fpos = ITM_GetPhysclNextFPos( pathItem, fpos )) < 0 )
  2083. break;
  2084. if ( (ret = item_get_fr( pathItem, fpos, frm )) == 0 )
  2085. {
  2086. if ( frm[0] <= frmchk[2] && frm[2] >= frmchk[0]
  2087. && frm[1] <= frmchk[3] && frm[3] >= frmchk[1] )
  2088. return (0);
  2089. }
  2090. }
  2091. } else
  2092. {
  2093. while ( (fpos = ITM_GetPhysclNextFPos( pathItem, fpos )) > 0 )
  2094. {
  2095. if ( ITM_GetStair( pathItem, fpos ) == 0 )
  2096. {
  2097. if ( (ret = item_get_fr( pathItem, fpos, frm )) == 0 )
  2098. {
  2099. if ( frm[0] <= frmchk[2] && frm[2] >= frmchk[0]
  2100. && frm[1] <= frmchk[3] && frm[3] >= frmchk[1] )
  2101. return (0);
  2102. }
  2103. }
  2104. }
  2105. }
  2106. return (1);
  2107. }
  2108.  
  2109. int item_get_fr( char *pathItem, int fpos, short *fr )
  2110. {
  2111. int ret;
  2112. int nextFPos;
  2113. int etyNum;
  2114. short icnNum;
  2115. char ttlStr[128], pathStr[128], paraStr[128];
  2116. int atrInf;
  2117. # 156 "item.c"
  2118. ret = ITM_GetItmType(pathItem,fpos);
  2119. # 160 "item.c"
  2120. switch ( ret )
  2121. {
  2122. case 1:
  2123. ITM_GetGrpData(pathItem,fpos,&etyNum,&icnNum,ttlStr,&nextFPos,fr);
  2124. # 167 "item.c"
  2125. break;
  2126. case 2:
  2127. ITM_GetAplData(pathItem,fpos,&icnNum,ttlStr,pathStr,paraStr,atrInf,fr);
  2128. # 173 "item.c"
  2129. break;
  2130. case 3:
  2131. return (-1);
  2132.  
  2133. default:
  2134. return (-1);
  2135. }
  2136. return (0);
  2137. }
  2138.  
  2139. int item_adjust_pos( short *newfrm )
  2140. {
  2141. if ( newfrm[2] > 621 )
  2142. {
  2143. newfrm[2] = 621;
  2144. newfrm[0] = newfrm[2] - 24;
  2145. }
  2146. if ( newfrm[3] > 410 )
  2147. {
  2148. newfrm[3] = 410;
  2149. newfrm[1] = newfrm[3] - 24;
  2150. }
  2151. return ((0));
  2152. }
  2153.